Шаг 86 - Корректная реакция на запросы операционной системы о переходе в спящий режим.

Система инициирует запрос о переходе в спящий режим, отправляя запущенным приложениям сообщение WM_POWERBROADCAST со значением wParam PRB_APMQUERYSUSPEND. Нулевой бит значения lParam, так называемый бит UI, указывает, возможно ли взаимодействие с пользователем. Если пользователь закрывает крышку портативного компьютера, система установит для этого бита значение 0. В противном случае значением бита UI будет 1. Ваше приложение должно реагировать на такие запросы следующим образом:

Когда приложение не занято и на сетевых устройствах нет несохраненных данных, приложение должно подготовиться к переходу в спящий режим, завершив все текущие операции и обеспечив сохранность данных при переходе в обычный режим. Затем приложение должно вернуть значение TRUE для этого сообщения.

Если приложение должно сохранить данные на сетевом устройстве, оно должно проверить бит UI и убедиться, что взаимодействие с пользователем возможно.

Если бит UI имеет значение 0, приложение должно отвергнуть запрос о переходе в спящий режим, возвратив BROADCAST_QUERY_DENY.

Если бит UI имеет значение 1, приложение должно запросить пользователя о необходимых действиях. Действия могут быть следующими: предложить пользователю сохранить данные и перейти в спящий режим.

предложить не сохранять данные и перейти в спящий режим.

предложить не переходить в спящий режим.

предложить список действий, необходимых для перехода в спящий режим.

Если приложение занято, оно должно сделать следующее:

Если значение бита UI равно 1, сообщить пользователю о том, что оно занято и не может перейти в спящий режим. Взаимодействие с пользователем автоматически заканчивается по окончании операции, приводящей к статусу «приложение занято». Пользователь может отменить переход в спящий режим или отменить операцию. По завершении операции или в случае отмены ее пользователем приложение должно подготовиться к переходу в спящий режим и вернуть значение TRUE. Если пользователь прервал переход в спящий режим, приложение должно вернуть значение BROADCAST_QUERY_DENY.

Если бит UI указывает на то, что взаимодействие с пользователем невозможно, приложение должно вернуть сообщение BROADCAST_QUERY_DENY или дождаться окончания операции, занимающей приложение, а затем подготовиться к переходу в спящий режим и вернуть значение TRUE.

Hosted by uCoz